package com.qdxht.dispenser.utils;


import com.google.gson.reflect.TypeToken;
import com.hjq.gson.factory.GsonFactory;
import com.qdxht.dispenser.ui.activity.main.QRCodeSettingsActivity;
import com.qdxht.dispenser.ui.activity.test.PlayResourcesBean;
import com.qdxht.dispenser.ui.models.entity.ConfigEntity;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

/**
 * @author GJ
 * @Description:
 * @date 2022/6/11 16:40
 */
public class ConfigUtil {

    // 默认二维码大小PX
    public static final int DEFAULT_QRCODE_SIZE = 200;
    // 默认横向偏移PX
    public static final int DEFAULT_QRCODE_HORIZONTAL_OFFSET = 90;
    // 默认纵向偏移PX
    public static final int DEFAULT_QRCODE_VERTICAL_OFFSET = 140;

    public static void saveConfig(ConfigEntity entity) {
       SpUtils.putObject("configEntity", entity);
    }

    public static ConfigEntity getConfig() {
       return SpUtils.getObject("configEntity", ConfigEntity.class);
    }

    public static List<PlayResourcesBean> getAdList() {
        Type listType = new TypeToken<List<PlayResourcesBean>>() {}.getType();
        List<PlayResourcesBean> list = SpUtils.getObject("adList", listType);
        if(list == null){
            return new ArrayList<>();
        }
        return list;
    }

    public static void setAdList(List<PlayResourcesBean> adList) {
        SpUtils.putObject("adList", adList);
    }

    /**
     * 获取库存
     * @return
     */
    public static Integer getInventory() {
        return SpUtils.decodeInt("inventory");
    }

    /**
     * 设置库存
     * @return
     */
    public static void setInventory(int inventory) {
        SpUtils.encode("inventory", inventory);
    }


    /**
     * 获取库存报警阈值
     * @return
     */
    public static Integer getInventoryAlarmThreshold() {
        return SpUtils.decodeInt("inventoryAlarmThreshold", 10);
    }

    /**
     * 设置库存报警阈值
     * @return
     */
    public static void setInventoryAlarmThreshold(int inventory) {
        SpUtils.encode("inventoryAlarmThreshold", inventory);
    }

    /**
     * 获取设备启用状态，默认启用
     * @return
     */
    public static boolean getEnableDevice() {
        return SpUtils.decodeBoolean("enableDevice", true);
    }

    /**
     * 设置库存
     * @return
     */
    public static void setEnableDevice(boolean bl) {
        SpUtils.encode("enableDevice", bl);
    }

    /**
     * 获取停用图片
     * @return
     */
    public static String getEnableImage() {
        return SpUtils.decodeString("enableImage");
    }

    /**
     * 设置停用图片
     * @return
     */
    public static void setEnableImage(String enableImage) {
        SpUtils.encode("enableImage", enableImage);
    }


    /**
     * 获取二维码
     * @return
     */
    public static String getQRCode() {
        return SpUtils.decodeString("qrCode");
    }

    /**
     * 设置二维码
     * @return
     */
    public static void setQRCode(String qrCode) {
        SpUtils.encode("qrCode", qrCode);
    }

    /**
     * 获取定位偏差阈值
     * @return
     */
    public static Integer getGPSAlarmThreshold() {
        return SpUtils.decodeInt("gpsAlarmThreshold", 10);
    }

    /**
     * 设置定位偏差阈值
     * @return
     */
    public static void setGPSAlarmThreshold(int gpsAlarmThreshold) {
        SpUtils.encode("gpsAlarmThreshold", gpsAlarmThreshold);
    }


    /**
     * 获取开机时间
     * @return
     */
    public static String getEnableTime() {
        return SpUtils.decodeString("enableTime");
    }

    /**
     * 设置开机时间
     * @return
     */
    public static void setEnableTime(String enableTime) {
        SpUtils.encode("enableTime", enableTime);
    }


    /**
     * 获取关机时间
     * @return
     */
    public static String getDisableTime() {
        return SpUtils.decodeString("disableTime");
    }

    /**
     * 设置关机时间
     * @return
     */
    public static void setDisableTime(String disableTime) {
        SpUtils.encode("disableTime", disableTime);
    }


    /**
     * 获取自动开关机状态，默认启用
     * @return
     */
    public static boolean getTimerSwitch() {
        return SpUtils.decodeBoolean("timerSwitch", false);
    }

    /**
     * 设置库存
     * @return
     */
    public static void setTimerSwitch(boolean bl) {
        SpUtils.encode("timerSwitch", bl);
    }


    /**
     * 获取默认出袋长度
     * @return
     */
    public static int getRollingDistance() {
        return SpUtils.decodeInt("rollingDistance", 270);
    }

    /**
     * 设置默认出袋长度
     * @return
     */
    public static void setRollingDistance(Integer rollingDistance) {
        SpUtils.encode("rollingDistance", rollingDistance);
    }

    /**
     * 获取二维码大小
     * @return 二维码大小(px)，默认200
     */
    public static int getQRCodeSize() {
        return SpUtils.decodeInt("qrCodeSize", DEFAULT_QRCODE_SIZE);
    }

    /**
     * 设置二维码大小
     * @param size 二维码大小(px)
     */
    public static void setQRCodeSize(int size) {
        SpUtils.encode("qrCodeSize", size);
    }

    /**
     * 获取二维码横向偏移量
     * @return 横向偏移量(px)，默认0
     */
    public static int getQRCodeHorizontalOffset() {
        return SpUtils.decodeInt("qrCodeHorizontalOffset", DEFAULT_QRCODE_HORIZONTAL_OFFSET);
    }

    /**
     * 设置二维码横向偏移量
     * @param offset 横向偏移量(px)
     */
    public static void setQRCodeHorizontalOffset(int offset) {
        SpUtils.encode("qrCodeHorizontalOffset", offset);
    }

    /**
     * 获取二维码纵向偏移量
     * @return 纵向偏移量(px)，默认0
     */
    public static int getQRCodeVerticalOffset() {
        return SpUtils.decodeInt("qrCodeVerticalOffset", DEFAULT_QRCODE_VERTICAL_OFFSET);
    }

    /**
     * 设置二维码纵向偏移量
     * @param offset 纵向偏移量(px)
     */
    public static void setQRCodeVerticalOffset(int offset) {
        SpUtils.encode("qrCodeVerticalOffset", offset);
    }

    /**
     * 是否需要清理缓存，默认否
     * @return
     */
    public static boolean getCacheClear() {
        return SpUtils.decodeBoolean("cacheClear", false);
    }

    /**
     * 设置是否需要清理缓存
     * @return
     */
    public static void setCacheClear(boolean bl) {
        SpUtils.encode("cacheClear", bl);
    }

}
